package com.fh.modules.upload;

import com.fh.common.exception.SelfDefinedException;
import com.fh.modules.upload.Response.FileUploadResponse;
import org.springframework.stereotype.Repository;
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * <p>title:</p>
 * <p>description:</p>
 * <p>company:</p>
 * <p></p>
 *
 * @author <a href="jerry@kingyon.com">Peng yi</a>
 * @date 2018-12-28
 */
@Repository
public interface UploadService {
    
 /*   *//**
     * 单文件上传
     *
     * @param file
     * @return
     *//*
    FileUploadResponse upload(MultipartFile file);
    
    
    *//**
     * 单文件上传
     *
     * @param inputStream
     * @param fileName
     * @return
     *//*
    FileUploadResponse upload(File inputStream, String fileName, Long size);
    
    *//**
     * 多文件上传 默认实现
     *
     * @param files 文件列表
     * @returns
     *//*
    default List<FileUploadResponse> uploads(List<MultipartFile> files) {
        if (!CollectionUtils.isEmpty(files)) {
            List<FileUploadResponse> keys = new ArrayList<>();
            files.forEach(file -> keys.add(upload(file)));
            return keys;
        } else {
            throw new SelfDefinedException("没有文件可以上传");
        }
        
    }
    
    *//**
     * 文件直传
     *
     * @return
     *//*
    Map getConfig();
    
    
    *//**
     * 获取sts上传token
     *//*
    Map getSTSConfig();
    
    *//**
     * 复制文件
     *
     * @param sourceKey 原始key
     * @param destKey   目标key
     *//*
    boolean copy(String sourceKey, String destKey);
    
    
    *//**
     * 删除文件
     *
     * @param key
     *//*
    boolean delete(String key);
    
    
    *//**
     * 文件是否存在
     *
     * @param key
     *//*
    boolean exist(String key);
    
    
    *//**
     * 获取文件公共访问路径路径
     *
     * @param key
     * @return
     *//*
    String getUrl(String key);
    
    
    *//**
     * 获取签名访问路径
     *
     * @param key
     * @return
     *//*
    String getPresignedUrl(String key);*/
}
